跳到主要内容

伤害结算

伤害结算是对单位造成伤害的必要过程。值得注意的是,我们规定伤害必须关联一个技能或者普通攻击。所以你会看到发起伤害结算都必须依赖一个技能或者普通攻击。 发起伤害结算有以下几种方式:

  1. 使用技能或者普通攻击的add_damage函数。
  2. 普通攻击施法后会自己发起一次伤害结算。

内置的伤害结算

在引擎内部有一个非常简易的伤害结算,供没有订阅过伤害事件的单位使用,它提供了非常有限的功能,由于它是内置在引擎中的,所以和脚本库提供的伤害结算相比,它非常高效。

这个伤害结算只是把伤害值扣除护甲的影响,然后再去减去等值的单位的生命,如果受到伤害的单位生命等于或小于0,则杀死这个单位。

!> 在单位属性和单位行为限制中提到的和伤害结算有关的属性和行为限制,除了护甲其它的在内置的伤害结算流程中都是无效的。

此外,只有由普通攻发起的伤害结算才会有可能进入内置的伤害结算。

脚本库提供的伤害结算

如果受到伤害的单位或者造成伤害的单位订阅了对应的伤害事件,那么引擎就会把伤害结算交给脚本库。

脚本库的伤害结算提供哪些功能

  1. 对内置的单位属性的支持,包括护甲,护盾
  2. 对单位行为限制的支持,包括无敌,魔免,物免,免死
  3. 对单位-伤害事件的支持,包括[单位-即将死亡],[造成/受到伤害开始],[造成/受到伤害]
  4. 对伤害-伤害事件的支持,包括[伤害初始化],[伤害前效果]
  5. 法球的支持

伤害结算看起来如此的复杂,这是因为引擎提供了非常高的灵活性,在理解完本文之后,你甚至可以自己定制一个伤害结算。